// 发布订阅 订阅的时候 会把内容存到一个数组里
// 发布的时候 需要循环数组依次执行
// 例如 vue中的event vue2的eventBus vue3的mitt redux中的subscribe mobox rxjs ...

const EventEmitter =require('events');
const util = require('util');
function Girl(){
}
util.inherits(Girl,EventEmitter);
const girl = new Girl();

//有新订阅就会触发这里注册的回调
girl.on('newListener', (type) => {
  console.log(type); // 只要调用x.on就会触发(即你监听但还没有emit这个x.on注册的事件 就会触发这里的回调)，其中的type为监听的事件名
});

girl.on('吃饭',()=>{
  console.log('吃饭前喝水')
}); //此时就会触发 girl.on('newListener',handler) 注册的回调handler, 无需emit

let listener = () => {
  console.log('吃完前洗手')
};
girl.on('吃饭',listener);

// girl.off('吃饭', listener);
// girl.emit('吃饭')
